﻿using System;
using System.Collections.Generic;
using System.Text;

using Working.Domínio.Produtos;

namespace Working.Domínio.Vendas
{
    public class ItemDeVenda: Entidade
    {
        #region Construtores
        public ItemDeVenda(Produto produto, int quantidade, decimal valorUnitário)
        {
            if (produto == null)
                throw new ArgumentException(VendasResources.SProdutoNãoPodeSerNulo);

            this.produto = produto;
            this.Quantidade = quantidade;
            this.ValorUnitário = valorUnitário;
        }

        public ItemDeVenda(Produto produto, int quantidade): this(produto, quantidade, 0)
        {
            this.valorUnitário = produto.Preço;
        }

        #endregion

        #region Propriedades

        public Produto Produto
        {
            get { return produto; }
        } private Produto produto;

        public int Quantidade
        {
            get { return quantidade; }
            set 
            {
                if (value <= 0)
                    throw new QuantidadeDeItensInválidaException(value);

                quantidade = value; 
            }
        } private int quantidade;


        public decimal ValorUnitário
        {
            get { return valorUnitário; }
            set { valorUnitário = value; }
        } private decimal valorUnitário;

        #endregion

        #region Métodos

        public decimal SubTotal
        {
            get { return CalcularSubTotal(); }
            
        }

        protected decimal CalcularSubTotal()
        {
            return this.ValorUnitário * this.Quantidade;
        }

        #endregion

    }
}
